/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package es.us.mwm.ejb;

import es.us.mwm.entities.Alerts;
import java.util.Iterator;
import java.util.List;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.inject.Named;

/**
 * EJB para almacenar las listas de alertas recogidas por el servicio rest AlertsFacadeRest. Esta clase debera ser de ambito
 * aplicacion para que todos los usuario puedan acceder a la lista y se mantenga actualizada en tiempo real Declarada
 * singleton para que solo haya una instancia a nivel aplicacion
 *
 * @author y0rg
 */
@Startup
@Singleton
@Named(value = "alertList")
public class AlertsEJBSingle implements AlertsEJBSingleLocal, AlertsEJBSingleRemote {

    private List<Alerts> list;//MEJOR QUE UNA LISTA, UNA PILA. AÑADIR ELIMINAR SIEMPRE SERAN FINAL y PRIMERO, PUSH y POP

    private int prueba = 5;

    /**
     *
     * @return
     */
    @Override
    public int getPrueba() {
        return prueba;
    }

    /**
     *
     * @param prueba
     */
    @Override
    public void setPrueba(int prueba) {
        this.prueba = prueba;
    }

    /**
     *
     */
    public AlertsEJBSingle() {
    }

    /**
     *
     * @param list
     */
    public AlertsEJBSingle(List<Alerts> list) {
        this.list = list;
    }

    /**
     * Metodo para acceder al atributo de clase
     *
     * @return devuelve la lista de alertas
     */
    @Override
    public List<Alerts> getList() {
        return list;
    }

    /**
     * Metodo para pacceder al atributo de clase
     *
     * @param list lista de alertas
     */
    @Override
    public void setList(List<Alerts> list) {
        this.list = list;
    }

    /**
     * Añaidr una alerta a la lista
     *
     * @param alert alerta a añadir
     */
    @Override
    public void add(Alerts alert) {
        list.add(alert);
    }

    /**
     * Eliminar una alerta de la lista
     *
     * @param alert alerta a eliminar
     */
    @Override
    public void delete(Alerts alert) {
        //list.remove(alert); ESTO FUNCIONA???
        Alerts al;
        boolean enc = false;
        Iterator<Alerts> it = list.listIterator();
        while (it.hasNext() && !enc) {
            al = it.next();
            if (al.getId() == alert.getId()) {
                it.remove();
                enc = true;
            }
        }

    }
}
